import { take,put, takeEvery, call, cps,all } from 'redux-saga/effects';
import * as actionTypes from './action-types';
function* add1() {
  for (let i = 0; i < 1; i++) {
    //等待有人向仓库派发ASYNC_ADD动作
    yield take(actionTypes.ASYNC_ADD);
    //等到之后会继续向下执行，再次派发ADD
    yield put({ type: actionTypes.ADD });
  }
  console.log('add1 done')
  return 'add1Result';
}
function* add2() {
  for (let i = 0; i < 2; i++) {
    //等待有人向仓库派发ASYNC_ADD动作
    yield take(actionTypes.ASYNC_ADD);
    //等到之后会继续向下执行，再次派发ADD
    yield put({ type: actionTypes.ADD });
  }
  console.log('add2 done');
  return 'add2Result';
}

function* rootSaga() {
  //使用all并行启动执行add1和add2,并等待它们都完成
  //all接收的是迭代器的数组，而非生成器的数组
  let result = yield all([add1(),add2()]);
  //等它们都完成后打印结果 ['add1Result','add2Result']
  console.log(result)
}
export default rootSaga;